import { getRequest } from "./api";

export const initMenu = (router, store) => {
  if (store.state.routes.length > 0) {
    return;
  }

  getRequest("/system/cfg/menu").then(resp => {
    if (resp) {
      // 格式化好的数据
      let fmtRoutes = formatRoutes(resp);
      // 添加到路由
      router.addRoutes(fmtRoutes);
      // 将数据存入vuex
      store.commit("initRoutes", fmtRoutes);
      store.dispatch("connect");
    }
  });
};

export const formatRoutes = routes => {
  let fmtRoutes = [];
  routes.forEach(item => {
    let { path, component, name, iconCls, children } = item;
    if (children && children instanceof Array) {
      // 递归
      children = formatRoutes(children);
    }
    let fmRouter = {
      path: path,
      name: name,
      iconCls: iconCls,
      children: children,
      // 懒加载路由
      component(resolve) {
        if (component.startsWith("Home")) {
          require(["../views/" + component + ".vue"], resolve);
        } else if (component.startsWith("Emp")) {
          require(["../views/emp/" + component + ".vue"], resolve);
        } else if (component.startsWith("Per")) {
          require(["../views/per/" + component + ".vue"], resolve);
        } else if (component.startsWith("Sal")) {
          require(["../views/sal/" + component + ".vue"], resolve);
        } else if (component.startsWith("Sta")) {
          require(["../views/sta/" + component + ".vue"], resolve);
        } else if (component.startsWith("Sys")) {
          require(["../views/sys/" + component + ".vue"], resolve);
        }
      }
    };
    fmtRoutes.push(fmRouter);
  });
  return fmtRoutes;
};
